1. Field of Invention
The present invention relates to the fields of distributed computing system, client-server computing, and object-oriented programming. More particularly, the invention relates to data structures, methods, and devices for facilitating servant invocation.
2. Description of the Prior Art
A computing environment in which objects located on different computers are linked by a network is typically referred to as a client-server computing environment. Some of the computers act as providers of services or functionality to other computers. Others of the computers act as consumers of services or functionalities. The providers of service or functionality are known as "servers", and the consumers of the service or functionality are called "clients". The client-server model may also be generalized to the case where distinct programs running on the same computer are communicating with one another through some protected mechanism and are acting as providers and consumers of service or functionality.
Attempts to provide such a distributed system have been made using object-oriented methodologies that are based upon a client-server model in which server objects provide interfaces to client objects that make requests of the server objects. Typically, in such a distributed system, the servers are objects consisting of data and associated methods. The client objects obtain access to the functionalities of the server objects by executing calls on them, which calls are mediated by the distributed system. When the server object receives a call, it executes the appropriate method and transmits the result back to the client object. The client object and server object communicate through an Object Request Broker (ORB) which is used to locate the various distributed objects and to establish communications between objects. Distributed objects may exist anywhere in a network, as for example in the address space of the client, in multiple address spaces on the client machine, and in multiple machines across the network.
The software industry has responded to the need for a distributed object technology by forming the Object Management Group (OMG). The goal of the OMG is to define the Object Management Architecture (OMA), which has four major components: the Object Request Broker (ORB), Object Services, Common Facilities, and Application Objects. The Object Request Broker provides basic object communications and management services, thereby forming the basis of a distributed object system. A standard for an Object Request Broker is contained in the Common Object Request Broker Architecture (CORBA) specification from the OMG, Revision 2.0, dated July 1995.
In typical client-server systems, performance overhead can be costly. That is, the speed and quality of a process within the system may be compromised by inefficient uses of application code and methods associated with transmitting information between distributed objects. By way of example, the performance overhead associated with repeatedly extracting information, from buffers or portions of code, each time that information is required by the client-server system, is high. Further, as will be appreciated by those skilled in the art, client-server systems typically use separate interfaces for compiled invocation and non-compiled invocation. The user of separate interfaces is inefficient. Consequently, the provisions of methods, data structures and/or devices which reduce the performance overhead associated with communicating information between distributed objects would be desirable. Further, the provision of a mechanism that would enable common base code to be shared between compiled invocation and non-compiled invocation would provide for the improved performance of a client-server system.